LW2000

 

Nombre:                Offline Explorer

Versión:                1.2

Editor:                  MetaProducts

Víctima:                OE.EXE

Herramientas:       W32Dasm

                            GetTyp

                            ProcDump v1.60

Cracker:                LW2000

Tutorial:                número 44

URL:                      http://www.metaproducts.com

 

Renuncia: Este tutorial tiene una finalidad únicamente educativa. No asumo ninguna responsabilidad por el mal uso de éste material.

 

1.     Bien, vamos a intentar registrarlo. Intrducimos ‘LW2000’ como Registered User y ‘123099’ como ‘Registration Key’.

2.     ¡Booom! “Sorry, registration information is invalid.”

3.     Parece que hemos encontrado un ‘bug’. ¡Vamos a corregirlo!

4.     En primer lugar comprobamos el ‘.EXE’ con GetTyp por si estuviera empaquetado con algún ‘EXE Packer’ (siempre hago esto en primer lugar).

5.     ¡Aha! GetTyp ha localizado “ASPack v1.083”. Bien, vamos a desempaquetarlo.

6.     Cargamos ProcDump y seleccionamos ‘UnPack’ y elegimos nuestro ‘empaquetador’.

7.     Cuando ProcDump termine cargamos el nuevo fichero desempaquetado en W32Dasm.

8.     Hacemos click en las ‘String Data References’ y buscamos nuestra cadena:

 

:004B7827 8B45F4          mov eax, dword ptr [ebp-0C]

:004B782A E8C5C7F4FF      call 00403FF4

:004B782F 8BC8            mov ecx, eax

 

* Possible StringData Ref from Code Obj->"Sorry, registration information is invalid."

                                  |

:004B7831 BA90784B00      mov edx, 004B7890

:004B7836 A1F84C4D00      mov eax, dword ptr [004D4CF8]

:004B783B 8B00            mov eax, dword ptr [eax]

:004B783D E81A7EF9FF      call 0044F65C

 

9.     Bien, estupendo. Pero si nos desplazamos un poco más arriba veremos desde donde hemos llegado:

 

* Referenced by a (U)nconditional or (C)onditional Jump at Address:

|:004B771B(C)  >Vamos aquí.

|

:004B7782 6A10            push 00000010

:004B7784 8D4DF0          lea ecx, dword ptr [ebp-10]

:004B7787 A1FC4A4D00      mov eax, dword ptr [004D4AFC]

:004B778C 8B00            mov eax, dword ptr [eax]

 

10.  Ahora vamos a la posición ‘004B771B’:

 

:004B7714 E8F7B00000      call 004C2810        >Rutina de comprobación

:004B7719 84C0            test al, al   >Comprueba AL

:004B771B 7565            jne 004B7782  >Comprobación

:004B771D A1FC4A4D00      mov eax, dword ptr [004D4AFC]

:004B7722 8B00            mov eax, dword ptr [eax]

:004B7724 C680C005000001  mov byte ptr [eax+000005C0], 01

 

11.  Así que, ¿qué podemos hacer ahora? ¿Cambiamos el ‘JNE’ a ‘JE’? ¡¡¡NO!!! Esto es bastante tonto ya que la mayoría de los programa comprueban el Serial en más de una ocasión.

12.  Así que si ‘AL = 1’ entonces se pasa la comprobación, en caso contrario. Falla. Vamos a ir dentro del ‘CALL’ y anotamos el offset (‘C1C10’). Abrimos el fichero desempaquetado con HIEW y vamos a nuestro offset:

 

:004C2810 55              push ebp

:004C2811 8BEC            mov ebp, esp

:004C2813 83C4F0          add esp, FFFFFFF0

:004C2816 53              push ebx

:004C2817 33DB            xor ebx, ebx

:004C2819 895DF0          mov dword ptr [ebp-10], ebx

 

13.  Pulsamos F3 para editar y F2 para introducir comando en ensamblador. Introducimos:

 

mov al, 1  [Intro]

ret        [Intro]

[Esc]

 

14.  Guardamos nuestro trabajo y salimos. Ahora intentamos registrarlo de nuevo.

 

¡Enhorabuena! ¡Ya es usted un usuario registrado!

 

¡Se acabó! Fácil, ¿no? ¿Algún comentario? Envíeme un email a LW2000@gmx.net. o vaya a http://www.LW2000.cjb.net

 

Gracias a tKC por sus tutoriales. Empecé leyendo su primer tutorial y todavía sigo leyéndolos.

 

Traducción de: MeGaBiTe